package avicit.bdp.dms.tdm.dao;

import avicit.bdp.dms.tdm.dto.AssetCatalogAuthDTO;
import com.github.pagehelper.Page;
import java.util.List;
import org.apache.ibatis.annotations.Param;

/** 数据共享_供需目录授权Dao */
public interface AssetCatalogAuthDAO {

  /**
   * 分页查询
   *
   * @param dto 查询对象
   * @param orgIdentity 组织id
   * @param wordSecret 文档密级
   * @param orderBy 排序条件
   * @param keyWords 查询关键字
   */
  Page<AssetCatalogAuthDTO> searchByPage(
      @Param("bean") AssetCatalogAuthDTO dto,
      @Param("orgIdentity") String orgIdentity,
      @Param("wordSecret") String wordSecret,
      @Param("orderBy") String orderBy,
      @Param("keyWords") String keyWords);

  /**
   * 不分页查询
   *
   * @param orgIds 组织ID串
   * @param orgIdentity 组织id
   * @param wordSecret 文档密级
   */
  List<AssetCatalogAuthDTO> search(
      @Param("orgIds") String orgIds,
      @Param("orgIdentity") String orgIdentity,
      @Param("wordSecret") String wordSecret);

  /**
   * 不分页查询
   *
   * @param dto 查询对象
   * @param orgIdentity 组织id
   * @param wordSecret 文档密级
   */
  List<AssetCatalogAuthDTO> searchList(
      @Param("bean") AssetCatalogAuthDTO dto,
      @Param("orgIdentity") String orgIdentity,
      @Param("wordSecret") String wordSecret);

  /**
   * 按条件导出查询
   *
   * @param dto 查询对象
   * @param orgIdentity 组织id
   * @param wordSecret 文档密级
   * @param orderBy 排序条件
   * @param keyWords 查询关键字
   */
  List<AssetCatalogAuthDTO> searchListForExportExcel(
      @Param("bean") AssetCatalogAuthDTO dto,
      @Param("orgIdentity") String orgIdentity,
      @Param("wordSecret") String wordSecret,
      @Param("orderBy") String orderBy,
      @Param("keyWords") String keyWords);

  /**
   * 主键查询
   *
   * @param id 主键id
   */
  AssetCatalogAuthDTO findById(String id);

  /**
   * 新增
   *
   * @param dto 保存对象
   * @return int
   */
  int insert(AssetCatalogAuthDTO dto);

  /**
   * 批量新增
   *
   * @param dtoList 保存对象集合
   * @return int
   */
  int batchSave(@Param("dtoList") List<AssetCatalogAuthDTO> dtoList);

  /**
   * 更新部分对象
   *
   * @param dto 更新对象
   * @return int
   */
  int updateSensitive(AssetCatalogAuthDTO dto);

  /**
   * 更新全部对象
   *
   * @param dto 更新对象
   * @return int
   */
  int updateAll(AssetCatalogAuthDTO dto);

  /**
   * 批量更新对象
   *
   * @param dtoList 批量更新对象集合
   * @return int
   */
  int batchUpdate(@Param("dtoList") List<AssetCatalogAuthDTO> dtoList);

  /**
   * 按主键删除
   *
   * @param id 主键id
   * @return int
   */
  int deleteById(String id);

  /**
   * 按组织ID删除
   *
   * @param orgId 组织ID
   * @return int
   */
  int deleteByOrgId(String orgId);
}
